#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

// 二分查找-函数实现 (在升序数组中查找)

int bin_search(int arr[], int left, int right, int key) 
{
	int mid = 0; //中间值
	// 当左下标大于右下标时，说明无法在数组中找到该数，跳出循环
	while (left <= right) 
	{
		mid = (left + right) / 2;
		// 如果查找数字比中间值大
		if (arr[mid] < key)
		{
			left = mid + 1;
			// 往右边查找
		}
		// 如果查找数字比中间值小
		else if (arr[mid] > key)
		{
			right = mid - 1;
			// 往左边查找
		}
		// 不大也不小，相等就是找到了
		else
		{
			return mid;
		}
	}
	return -1; // 找不到返回 -1 
}
int main() 
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int key = 0;
	int left = 0;	//左下标
	int right = sizeof(arr)/sizeof(arr[0])-1; //右下标（最大下标比实际个数少1）

	scanf("%d",&key); //输入查找的数字
	int x = bin_search(arr, left, right, key);
	//判断
	if(x != -1)		
	{
		printf("找到了，在arr数组中下标为%d",x);
	}
	else 
	{
		printf("这个数字%d在arr数组中找不到",key);
	}
	return 0;
}